#ifndef SCREENCAPTURE_H
#define SCREENCAPTURE_H

#include <QObject>
#include <QTimer>
#include <QUdpSocket>
#include <QScreen>
#include <QPixmap>
#include <QBuffer>

class ScreenCapture : public QObject
{
    Q_OBJECT

public:
    explicit ScreenCapture(QObject *parent = nullptr);
    ~ScreenCapture();

    // 核心功能
    bool initialize();
    void startSharing(const QString& teacherIP, int port = 5006);
    void stopSharing();
    bool isSharing() const;

    // 配置参数
    void setCaptureInterval(int msecs);  // 捕获间隔
    void setImageQuality(int quality);   // 图像质量 (1-100)
    void setMaxSize(const QSize& size);  // 最大尺寸

signals:
    void sharingStarted();
    void sharingStopped();
    void errorOccurred(const QString& error);

private slots:
    void captureAndSend();
    void onSocketError(QAbstractSocket::SocketError error);

private:
    QByteArray compressImage(const QPixmap& pixmap);
    void sendImageData(const QByteArray& data);

private:
    QUdpSocket* udpSocket;
    QTimer* captureTimer;
    QString targetIP;
    int targetPort;
    bool isSharingFlag;
    
    // 配置参数
    int captureInterval;  // 捕获间隔(毫秒)
    int imageQuality;     // 图像质量
    QSize maxSize;        // 最大尺寸
    int frameCounter;     // 帧计数器
};

#endif // SCREENCAPTURE_H
